'''
 定义一个单词的“兄弟单词”为：交换该单词字母顺序（注：可以交换任意次），而不添加、删除、修改原有的字母就能生成的单词。
兄弟单词要求和原来的单词不同。例如： ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。
现在给定你 n 个单词，另外再给你一个单词 x ，让你寻找 x 的兄弟单词里，按字典序排列后的第 k 个单词是什么？

输入描述：
输入只有一行。 先输入字典中单词的个数n，再输入n个单词作为字典单词。 然后输入一个单词x 最后后输入一个整数k
输出描述：
第一行输出查找到x的兄弟单词的个数m 第二行输出查找到的按照字典顺序排序后的第k个兄弟单词，没有符合第k个的话则不用输出。

例1
输入：
3 abc bca cab abc 1
输出：
2
bca
'''

'''
思路：
1. 输入一行字符串
2. 找到目标单词x [-2]位置
3. 去除明显不可能的单词（长度、字符种类）
4. 比较剩下的单词 --- 不仅种类要相同，每个字符的数量也要一致
5. 输出兄弟单词数量
6. 输出第k个兄弟单词
'''

class Solution:
    # 考虑两个问题
    # 1. 字符种类要相同
    # 2. 字符每个种类个数也要相同
    # 解决方法，把字符串排序后再比较，就可以了
    def find_bro(self):
        s_in = input()
        s_list = s_in.split(' ')
        # print(s_list)

        word_num = int(s_list[0])
        o_word = s_list[-2]
        sorted_o_word = sorted(o_word) # type：list
        # print(sorted_o_word)
        o_word_lenth = len(o_word)
        k = int(s_list[-1])

        bro_words = []

        for i in range(1, word_num+1):
            flag = False
            r_word = s_list[i]

            if len(r_word) != o_word_lenth or r_word == o_word:  # 如果长度不同或者与原单词一样，就排除
                continue

            if sorted(r_word) == sorted_o_word: # 把字符串排序后再比较
                bro_words.append(r_word)

        if bro_words:
            print(len(bro_words))
            if len(bro_words) > k:
                bro_words.sort() # 还要进行整体排序
                print(bro_words[k-1])
        else:
            print(0)
            # for mem in bro_words:
            #     print(mem)


s = Solution()
s.find_bro()









